#!/usr/bin/env python

ff = [0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x5F, 0x00, 0x00, 
0x00, 0x07, 0x00, 0x07, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14, 
0x24, 0x2A, 0x7F, 0x2A, 0x12, 
0x23, 0x13, 0x08, 0x64, 0x62, 
0x36, 0x49, 0x55, 0x22, 0x50, 
0x00, 0x05, 0x03, 0x00, 0x00, 
0x00, 0x1C, 0x22, 0x41, 0x00, 
0x00, 0x41, 0x22, 0x1C, 0x00, 
0x08, 0x2A, 0x1C, 0x2A, 0x08, 
0x08, 0x08, 0x3E, 0x08, 0x08, 
0x00, 0x50, 0x30, 0x00, 0x00,  
0x08, 0x08, 0x08, 0x08, 0x08,  
0x00, 0x30, 0x30, 0x00, 0x00, 
0x20, 0x10, 0x08, 0x04, 0x02,  
0x3E, 0x51, 0x49, 0x45, 0x3E,  
0x00, 0x42, 0x7F, 0x40, 0x00,  
0x42, 0x61, 0x51, 0x49, 0x46,  
0x21, 0x41, 0x45, 0x4B, 0x31,  
0x18, 0x14, 0x12, 0x7F, 0x10,  
0x27, 0x45, 0x45, 0x45, 0x39,  
0x3C, 0x4A, 0x49, 0x49, 0x30,  
0x01, 0x71, 0x09, 0x05, 0x03,  
0x36, 0x49, 0x49, 0x49, 0x36,  
0x06, 0x49, 0x49, 0x29, 0x1E,  
0x00, 0x36, 0x36, 0x00, 0x00,  
0x00, 0x56, 0x36, 0x00, 0x00,  
0x00, 0x08, 0x14, 0x22, 0x41,  
0x14, 0x14, 0x14, 0x14, 0x14,  
0x41, 0x22, 0x14, 0x08, 0x00,  
0x02, 0x01, 0x51, 0x09, 0x06,  
0x32, 0x49, 0x79, 0x41, 0x3E,  
0x7E, 0x11, 0x11, 0x11, 0x7E,  
0x7F, 0x49, 0x49, 0x49, 0x36,  
0x3E, 0x41, 0x41, 0x41, 0x22,  
0x7F, 0x41, 0x41, 0x22, 0x1C,  
0x7F, 0x49, 0x49, 0x49, 0x41,  
0x7F, 0x09, 0x09, 0x01, 0x01,  
0x3E, 0x41, 0x41, 0x51, 0x32,  
0x7F, 0x08, 0x08, 0x08, 0x7F,  
0x00, 0x41, 0x7F, 0x41, 0x00,  
0x20, 0x40, 0x41, 0x3F, 0x01,  
0x7F, 0x08, 0x14, 0x22, 0x41,  
0x7F, 0x40, 0x40, 0x40, 0x40,  
0x7F, 0x02, 0x04, 0x02, 0x7F,  
0x7F, 0x04, 0x08, 0x10, 0x7F,  
0x3E, 0x41, 0x41, 0x41, 0x3E,  
0x7F, 0x09, 0x09, 0x09, 0x06,  
0x3E, 0x41, 0x51, 0x21, 0x5E,  
0x7F, 0x09, 0x19, 0x29, 0x46,  
0x46, 0x49, 0x49, 0x49, 0x31,  
0x01, 0x01, 0x7F, 0x01, 0x01,  
0x3F, 0x40, 0x40, 0x40, 0x3F,  
0x1F, 0x20, 0x40, 0x20, 0x1F,  
0x7F, 0x20, 0x18, 0x20, 0x7F,  
0x63, 0x14, 0x08, 0x14, 0x63,  
0x03, 0x04, 0x78, 0x04, 0x03,  
0x61, 0x51, 0x49, 0x45, 0x43,  
0x00, 0x00, 0x7F, 0x41, 0x41,  
0x02, 0x04, 0x08, 0x10, 0x20,  
0x41, 0x41, 0x7F, 0x00, 0x00,  
0x04, 0x02, 0x01, 0x02, 0x04,  
0x40, 0x40, 0x40, 0x40, 0x40,  
0x00, 0x01, 0x02, 0x04, 0x00,  
0x20, 0x54, 0x54, 0x54, 0x78,  
0x7F, 0x48, 0x44, 0x44, 0x38,  
0x38, 0x44, 0x44, 0x44, 0x20,  
0x38, 0x44, 0x44, 0x48, 0x7F,  
0x38, 0x54, 0x54, 0x54, 0x18,  
0x08, 0x7E, 0x09, 0x01, 0x02,  
0x08, 0x14, 0x54, 0x54, 0x3C,  
0x7F, 0x08, 0x04, 0x04, 0x78,  
0x00, 0x44, 0x7D, 0x40, 0x00,  
0x20, 0x40, 0x44, 0x3D, 0x00,  
0x00, 0x7F, 0x10, 0x28, 0x44,  
0x00, 0x41, 0x7F, 0x40, 0x00,  
0x7C, 0x04, 0x18, 0x04, 0x78,  
0x7C, 0x08, 0x04, 0x04, 0x78,  
0x38, 0x44, 0x44, 0x44, 0x38,  
0x7C, 0x14, 0x14, 0x14, 0x08,  
0x08, 0x14, 0x14, 0x18, 0x7C,  
0x7C, 0x08, 0x04, 0x04, 0x08,  
0x48, 0x54, 0x54, 0x54, 0x20,  
0x04, 0x3F, 0x44, 0x40, 0x20,  
0x3C, 0x40, 0x40, 0x20, 0x7C,  
0x1C, 0x20, 0x40, 0x20, 0x1C,  
0x3C, 0x40, 0x30, 0x40, 0x3C,  
0x44, 0x28, 0x10, 0x28, 0x44,  
0x0C, 0x50, 0x50, 0x50, 0x3C,  
0x44, 0x64, 0x54, 0x4C, 0x44,  
0x00, 0x08, 0x36, 0x41, 0x00,  
0x00, 0x00, 0x7F, 0x00, 0x00,  
0x00, 0x41, 0x36, 0x08, 0x00,  
0x08, 0x08, 0x2A, 0x1C, 0x08,  
0x08, 0x1C, 0x2A, 0x08, 0x08]   



class Node(object):
	left = None
	right = None
	item = None
	weight = 0

	def __init__(self, i, w):
		self.item = i
		self.weight = w

	def setChildren(self, ln, rn):
		self.left = ln
		self.right = rn

	def __repr__(self):
		return "%s - %s -- %s _ %s" % (self.item, self.weight, self.left, self.right)

	def __cmp__(self, a):
		return cmp(self.weight, a.weight)


from itertools import groupby
from heapq import *



def huffman(input):


	itemqueue =  [Node(a,len(list(b))) for a,b in groupby(sorted(input))]
	heapify(itemqueue)
	while len(itemqueue) > 1:
		l = heappop(itemqueue)
		r = heappop(itemqueue)
		n = Node(None, r.weight+l.weight)
		n.setChildren(l,r)
		heappush(itemqueue, n)

	codes = {}

	def codeIt(s, node):
		if node.item:
			if not s:
				codes[node.item] = "0"
			else:
				codes[node.item] = s
		else:
			codeIt(s+"0", node.left)
			codeIt(s+"1", node.right)

	codeIt("",itemqueue[0])


	print codes
	d = "".join([codes[a] for a in input])
	print len(d)/8, d

	return codes, "".join([codes[a] for a in input])



print "go!"
f = open( "konami_font.bin", "r" )
d = f.read();
f.close;

#d = "";
#for i in ff:
#	d=d+ chr(i)
print len(d)
huffman( d )

